import { OnInit, ElementRef } from '@angular/core';
import { ElectronService } from '../providers/electron.service';
import { AppConfig } from '../../environments/environment';
import * as Url from 'url';
import * as Path from 'path';
import { CommonUtils } from '../utils/commonutils';

export abstract class BaseComponent {
    constructor(protected electronService: ElectronService,
        protected el: ElementRef) {
    }
    get element() {
        return this.el.nativeElement;
    }
    /**
     * 打开开发者工具
     */
    openDevTools() {
        this.electronService.openDevTools();
    }
    /**
     * 关闭开发者工具
     */
    closeDevTools() {
        this.electronService.closeDevTools();
    }
    /**
     * 打开窗口
     * @param url 打开窗口的url
     * @param options 窗口选项
     * @param configWindow 配置窗口处理
     */
    openWindow(url: string, options?: Electron.BrowserWindowConstructorOptions
        , configWindow?: (w: Electron.BrowserWindow) => void) {
        this.electronService.openWindow(url, options, configWindow);
    }
    /**
     * 延迟指定毫秒执行指定处理
     * @param func 要进行的处理方法
     * @param delayTimes 延迟时间,默认：20毫秒
     */
    protected executeAfterTimes(func: () => void, delayTimes: number = 20) {
        const interval = setInterval(() => {
            clearInterval(interval);
            func();
        }, delayTimes);
    }
    /**
     * 获取指定id的html元素
     * @param id 元素id
     */
    protected getHtmlElementById(id: string): HTMLElement {
        const htmlElement: HTMLElement = this.el.nativeElement;
        return htmlElement.ownerDocument.getElementById(id);
    }
    /**
     * 获取指定class的html元素
     * @param className 类名
     */
    protected getHtmlElementByClassName(className: string): any {
        const htmlElement: HTMLElement = this.el.nativeElement;
        return htmlElement.ownerDocument.getElementsByClassName(className);
    }
    /**
     * 使页面上指定id的元素获取到焦点
     * @param id 元素的id
     */
    protected focusElement(id: string) {
        const element = this.getHtmlElementById(id);
        if (element) {
            element.focus();
        }
    }
    /**
     * 使页面上指定class的第一个元素获取到焦点
     * @param className 元素的id
     */
    protected focusElementByClassName(className: string) {
        const elements = this.getHtmlElementByClassName(className);
        if (elements && elements.length > 0) {
            elements[0].focus();
        }
    }
}
